﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using EntityLayer;
namespace DataLayer.DAO
{
    public class clsT_PrelegajoDAO
    {
        private BDCONTRALORIAEntities ContextoDeObjs = new BDCONTRALORIAEntities();
        public bool Insertar(T_Prelegajo Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_Prelegajo", Obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
                throw;
            }
        }

        public bool Modificar(T_Prelegajo obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_Prelegajo", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool Eliminar(T_Prelegajo obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_prelegajo", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public List<T_Prelegajo> listarPreLegajo()
        {
            try
            {
            List<T_Prelegajo> listarPreLegajo = new List<T_Prelegajo>();
            var q = from c in ContextoDeObjs.T_Prelegajo
                    select c;
            listarPreLegajo = q.ToList();
            return listarPreLegajo;

            }
            catch (Exception ex)
            {
                
                throw;
            }
        }
        
        public List<V_legajos> listarPreLegajoAbogado()
        {
            List<V_legajos> lista = new List<V_legajos>();
            var q = from c in ContextoDeObjs.V_legajos
                    where c.VR_estado == "Activo"
                    select c;
            lista = q.ToList();
            return lista;
        }

        public List<T_Prelegajo> listarLegajoNU_Resol(string NU_resolucion)
        {
            List<T_Prelegajo> listarLegajoNU_Resol = new List<T_Prelegajo>();
            var q = from c in ContextoDeObjs.T_Prelegajo
                    where c.NU_Prelegajo == NU_resolucion
                    select c;
            listarLegajoNU_Resol = q.ToList();
            return listarLegajoNU_Resol;
        }

        public string listar_genera_nroResolucion()
        {
          //  List<sp_Genera_nroResolucion> listar_genera_nroResolucion = new List<sp_Genera_nroResolucion>();
           // return Convert.ToString( ContextoDeObjs.sp_Genera_nroResolucion());

            int result = Convert.ToInt32( ContextoDeObjs.T_Prelegajo.Max(x => x.NU_Prelegajo));
            result = result + 1;
            return result.ToString("0000000000");
        }

        public bool AsignarAbogado(string nu_Resolucion, string co_Abogado, DateTime fe_Asignacion)
        {
            try
            {
                var objLegajo = new T_Prelegajo { NU_Prelegajo = nu_Resolucion };
                
                ContextoDeObjs.T_Prelegajo.Attach(objLegajo);
                objLegajo.CO_persona = co_Abogado;
                objLegajo.fe_Asignacion = fe_Asignacion;
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception ex)
            {

                return false;
                throw;
            }

        }

        public bool Anular(string nu_Resolucion)
        {
            try
            {
                var objLegajo = new T_Prelegajo { NU_Prelegajo = nu_Resolucion };

                ContextoDeObjs.T_Prelegajo.Attach(objLegajo);
                objLegajo.CO_estado="02";
                 ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception ex)
            {

                return false;
                throw;
            }

        }

        public bool VerificaAsignacion(string nu_Resolucion)
        {
            try
            {
                List<T_Prelegajo> listarLegajoNU_Resol = new List<T_Prelegajo>();
                var q = from c in ContextoDeObjs.T_Prelegajo
                        where c.NU_Prelegajo == nu_Resolucion
                        select c;
                q = q.Where(a => a.CO_persona =="00");

                if (q.Count() == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
               
            }
            catch (Exception ex)
            {

                return false;
                throw;
            }

        }

    }
}
